package com.dhcc.DRGsHosp.application;

import java.util.List;
import java.util.Map;

import com.dhcc.DRGsHosp.core.domain.IndexCal;
import com.dhcc.DRGsHosp.facade.dto.IndexCalDTO;

public interface DrgsIndexCalApplication {
	/**
	 * 
	 *  getRecentlyManageYear.  
	 * @param mrDate 
	 * @param msCode
	 * @param monitorType add by wen 
	 *  @Description：管理标杆年份
	 *  @Author LiuHongjun
	 *  @return 
	 *  @Date:2017年5月19日上午11:54:07
	 */
	String getRecentlyManageYear(String mrDate, String msCode, String monitorType);
	/**
	 * 
	 *  getQuotasByMoreCode.  
	 *  @Description：根据多指标代码quota_id从T_QUOTASELECTDTL 表中取出真正的指标代码
	 *  @Author LiuHongjun
	 *  @param quotaCode
	 *  @return 
	 *  @Date:2017年5月20日上午11:13:09
	 */
	List<Map<String,Object>> getQuotasByMoreCode(String quotaCode);
	/**
	 * 
	 *  getUnitByQuotaCode.  
	 *  @Description：获取指标的精度（小数点）
	 *  @Author LiuHongjun
	 *  @param quotaCode
	 *  @return 
	 *  @Date:2017年5月20日下午4:26:57
	 */
	String getUnitByQuotaCode(String quotaCode);
	/**
	 * 
	 *  getDrgsIndex.  
	 *  @Description：根据指标code获取指标值
	 *  @Author LiuHongjun
	 *  @param entity
	 *  @param quotaCode
	 *  @return 
	 *  @Date:2017年5月20日下午4:44:38
	 */
	List<Object[]> getDrgsIndex(IndexCal indexCal, String quotaCode);
	
	/**
	 *  getDrgsManagerIndex.  
	 *  @Description：获取系统管理目标（提前维护好的各个对象的各标杆值）
	 *  @Author LiuHongjun
	 *  @param indexCal
	 * @param quotaCode 
	 *  @return 
	 *  @Date:2017年5月22日上午11:17:00
	 */
	List<Object[]> getDrgsManagerIndex(IndexCal indexCal, String quotaCode);
	/**
	 * 
	 *  getSqlByQuotaCode.  
	 *  @Description：获取计算指标sql
	 *  @Author LiuHongjun
	 *  @param quotaCode
	 *  @return 
	 *  @Date:2017年5月26日下午3:02:35
	 */
	String getSqlByQuotaCode(String quotaCode);
	
	
	/**
	 * 
	 * @Title: findCaseListFast
	 * @author:LiQingYang   
	 * @Description: 获取病例方法重写，速度提升至少一倍   
	 * @param: @param page 页数
	 * @param: @param pageSize 每页展示条数
	 * @param: @param index  参数对象
	 * @param: @param isGroup 是否入组病例,0:否,1:是,空串:全部
	 * @param: @param isGt60 是否大于60天病例,0:否,1:是
	 * @param: @param outWay 离院方式
	 * @param: @param risk 病组风险等级
	 * @param: @return      
	 * @return: List<Map<String, Object>>     
	 * @throws
	 * @date:2017年6月20日 上午10:36:01
	 */
	public List<Map<String, Object>> findCaseListFast(int page, int pageSize, IndexCal index, String isGroup,String isGt60,String outWay,String risk,String orderColumn,String orderMethod);
	
	/**
	 * 
	 *  findImportedCaseList.  
	 *  @Description：获取已导入病例明细
	 *  @Author mazhaoyan
	 *  @param page
	 *  @param pageSize
	 *  @param date 年月
	 * @param groupShcme 
	 *  @return 
	 *  @Date:2017年7月12日下午9:28:13
	 */
	public List<Map<String, Object>> findImportedCaseList(int page, int pageSize, String date,String type2, String orderColumn, String orderMethod,String stdId, String groupShcme);
	/**
	 * 
	 *  findImportedHcCaseList.  
	 *  @Description：获取已导入医保病例明细
	 *  @Author ZouYiyu
	 *  @param page
	 *  @param pageSize
	 *  @param date
	 *  @param type2
	 * @param orderMethod 
	 * @param orderColumn 
	 * @param groupScheme 
	 *  @return 
	 *  @Date:2017年7月20日下午7:31:00
	 */
	public List<Map<String, Object>> findImportedHcCaseList(int page, int pageSize, String date,String type2, String orderColumn, String orderMethod,String stdId, String groupScheme);
	/**
	 * 
	 *  findImportedCaseCount.  
	 *  @Description：获取已导入病例数
	 *  @Author mazhaoyan
	 *  @param page
	 *  @param pageSize
	 *  @param date
	 * @param groupShcme 
	 *  @return 
	 *  @Date:2017年7月13日上午10:29:01
	 */
	public int findImportedCaseCount(int page, int pageSize, String date,String type2,String stdId, String groupShcme);
	/**
	 * 
	 *  findImportedHcCaseCount.  
	 *  @Description：获取已导入医保病例数
	 *  @Author ZouYiyu
	 *  @param page
	 *  @param pageSize
	 *  @param date
	 *  @param type2
	 * @param groupScheme 
	 *  @return 
	 *  @Date:2017年7月20日下午8:44:44
	 */
	public int findImportedHcCaseCount(int page, int pageSize, String date,String type2,String stdId,String groupScheme);
	
	
	/**
	 * 
	 * @Title: findCaseCountFast
	 * @author:LiQingYang   
	 * @Description: 获取病例总数   
	 * @param: @param index
	 * @param: @param isGroup
	 * @param: @param isGt60
	 * @param: @param outWay
	 * @param: @param risk
	 * @param: @return      
	 * @return: int      
	 * @throws
	 * @date:2017年6月26日 上午10:31:02
	 */
	public int findCaseCountFast(IndexCal index,String isGroup,String isGt60,String outWay,String risk);
	
	/**
	 * @methodname    :getQuotas
	 * @description   :获取多指标明细
	 * @param         :
	 * @author        :chenhanlin
	 * @return        :
	 * @date          :2017年06月22日
	 */
	List<Object[]> getQuotas(String quotaCode);
	/**
	 * @methodname    :getLatestDate
	 * @description   :获取最新病例日期
	 * @param         :
	 * @author        :lileizheng
	 * @param grupScheme 
	 * @return        :
	 * @date          :2015年11月13日
	 */
	String getLatestDate(String grupScheme);
	
	/**
	 * 
	 * @methodname    :getManageSummary
	 * @description   : 获取外部标杆信息
	 * @param         :msType 标杆类型 1 绩效标杆 2 外院标杆
	 * @author        :mazhaoyan
	 * @return        :
	 * @date          :2017年6月28日
	 */
	public List<Map<String,Object>> getManageSummary(String msType);
	/**
	 * 
	 *  getGroupAllYears.  
	 *  @Description：获取分组数据有哪些年份的数据
	 *  @Author LiuHongjun
	 *  @param entity
	 *  @return 
	 *  @Date:2017年6月29日下午1:45:36
	 */
	List<String> getGroupAllYears(IndexCal entity);
	/**
	 * 
	 *  getManagerQuotaCode.  
	 *  @Description：获取目前维护的指标绩效和标杆比值
	 *  @Author LiuHongjun
	 *  @param year年份
	 *  @param pType病人类型
	 *  @param msCode指标类型
	 *  @return 
	 *  @Date:2017年7月8日下午4:55:11
	 */
	List<String> getManagerQuotaCode(String year, String pType, String msCode);
	/**
	 * 
	 *  getDrgsStdIndex.  
	 *  @Description：标杆比计算
	 *  @Author LiuHongjun
	 *  @param entity
	 *  @param quotaCode
	 *  @return 
	 *  @Date:2017年7月8日下午4:28:19
	 */
	List<Object[]> getDrgsStdIndex(IndexCal entity, String quotaCode);
	/**
	 * 
	 *  getHisGroupVersion.  
	 *  @Description：获取历史分组器版本
	 *  @Author LiuHongjun
	 *  @return 
	 *  @Date:2017年8月1日下午4:53:35
	 */
	//Object getHisGroupVersion(IndexCalDTO dto);
	public List<Map<String, Object>> getHisGroupVersion(IndexCalDTO dto);
	/**
	 *  getMrDate.  
	 *  @Description：获取分组年份
	 *  @Author LiuHongjun
	 *  @return 
	 *  @Date:2017年8月7日下午3:30:36
	 */
	Object getMrDate();
	/**
	 * 
	 *  getStdYear.  
	 *  @Description：
	 *  @Author LiuHongjun
	 *  @return 
	 *  @Date:2017年9月8日下午3:14:17
	 */
	List<Map<String,Object>> getStdYear();
	/**
	 * 
	 *  getStdType.  
	 *  @Description：获取标杆类型
	 *  @Author fulianxia
	 *  @return 
	 *  @Date:2018年1月11日
	 */
	List<Map<String,Object>> getStdType();
	
	/**
	 * 
	 *  @desp  ：获取指标详细信息
	 *  @Author： lhj
	 *  @param code
	 *  @return
	 *  @Date  :2017年12月20日上午9:08:11
	 */
	Map<String, Object> getQuotaDetail(String code);
	/**
	 *  @desp  ：获取分组器版本号
	 *  @Author： lhj
	 *  @param string
	 *  @param dateFrom
	 *  @param dateTo
	 *  @return
	 *  @Date  :2018年1月4日下午2:08:40
	 */
	String getGroupVerCode(String string, String dateFrom, String dateTo);
	/**
	 *  @desp  ：
	 *  @Author： lhj
	 *  @param stdType 标杆类型
	 *  @param verCode 分组器版本号
	 *  @param year 年份
	 *  @return
	 *  @Date  :2018年1月4日下午2:27:52
	 */
	String getStdYear(String stdType, String verCode, String year);
	/**
	 *  @desp  ：获取系统配置
	 *  @Author： lhj
	 *  @param cfgCode
	 *  @return
	 *  @Date  :2018年1月5日下午3:16:26
	 */
	String getConfigValueByCode(String cfgCode);
	/**
	 * 
	 *  @desp  ：监测当前分组方案以及监测时间范围内分组器版本号 
	 *  @Author： lhj
	 *  @param entity
	 *  @return
	 *  @Date  :2018年1月27日上午9:35:06
	 */
	List<Map<String, Object>> checkVerVersion(String verRegion,String dateF,String dateT);
	/**
	 *  @desp  ：根据医院编码获取科室组
	 *  @Author： lhj
	 *  @param hospCode
	 * @param depGroupCode 
	 *  @return
	 *  @Date  :2018年1月29日下午7:57:16
	 */
	List<Map<String, Object>> getDepGroupByCode(String hospCode, String depGroupCode);
	/**
	 * 
	 *  @desp  ：根据医院编码获取病区
	 *  @Author： lhj
	 *  @param hospCode
	 * @param wardCode 
	 * @param depGroupCode 
	 *  @return
	 *  @Date  :2018年1月29日下午8:01:03
	 */
	List<Map<String, Object>> getWardByCode(String hospCode, String depGroupCode, String wardCode, String depCode);
	/**
	 * 
	 *  @desp  ：获取各级医师
	 *  @Author： lhj
	 *  @param entity
	 *  @return
	 *  @Date  :2018年2月2日下午5:05:05
	 */
	List<Map<String, Object>> getDoctor(IndexCal entity);
	
	/**
	 * @methodname    :findCaseListGlobal
	 * @description   :系统全局搜索病例
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2018年1月29日
	 */
	List<Map<String, Object>> findCaseListGlobal(String filterStr);
	/**
	 * @methodname    :deleteCase
	 * @description   :删除系统病例
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2018年1月30日
	 */
	void deleteCase(String parid);
	/**
	 *  @desp  ：获取首页数据所有年月
	 *  @Author： liuhongjun
	 *  @return
	 *  @Date  :2018年3月8日下午4:48:14
	 */
	List<Map<String, Object>> findMrTime();
	/**
	 *  @Discription：检测系统是否含有病组的绩效管理值
	 *  @Author： liuhongjun
	 *  @return
	 *  @Date:2018年3月21日下午2:20:45
	 */
	int isDrgManager();
	
	/**
	 * @Description: 执行查询，返回Integer
	 * @param
	 * @return  
	 * @throws
	 * @author chenhanlin
	 * @date 2018/7/26 15:57
	 */
	public Integer executeQueryForInt(String sql,Map<String,Object> condition) ;
	/**
	 * @Description:  批量执行更新方法
	 * @param  
	 * @return  
	 * @throws
	 * @author chenhanlin
	 * @date 2018/7/29 10:47
	 */
	public int[] batchUpdate(String sql,List list) ;

	/** 执行更新的sql
	 * @Description:
	 * @param
	 * @return
	 * @throws
	 * @author chenhanlin
	 * @date 2018/7/30 14:24
	 */
	public int excuteUpdate(String sql,Map<String,Object> condition) ;

	/**
	 * @Description: 执行查询的sql,返回List<T>
	 * @param  
	 * @return  
	 * @throws
	 * @author chenhanlin
	 * @date 2018/8/6 16:26 
	 */
	public List excuteQueryForList(String sql,Map<String,Object> condition) ;

	/**
	 *  查询分析报告sql
	 *  findSQLAnalysisreport.
	 *  @Description：
	 *  @Author ChenHanlin
	 *  @param codeSql
	 *  @return
	 *  @Date:2018年6月15日下午3:54:08
	 */
	public String findSQLAnalysisreport(String codeSql,String templateCode,String chaper,String section) ;
	
	/**
	 * 
	 *  @Discription：获取病例表中的最大时间
	 *  @Author： ：fulianxia
	 *  @return
	 *  @Date:2018年12月27日
	 */
	public String getLatestPatientDate();
}

